<?php

/**
 * Controlardor de gestión de usuarios
 *
 */
class controlador_clientes {

    /**
     * Metodo para mostrar la vista de cliente
     */
    public function inicio_cliente() {
        if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('cliente')) {
            $obj_anuncio = new Anuncio();
            $params_anuncios = $obj_anuncio->get_anuncios_by_cliente($_SESSION['weokey_publicidad_usuario_id']);

            $obj_cliente = new Cliente();
            $num_anuncios = $obj_cliente->obtener_numero_anuncios($_SESSION['weokey_publicidad_usuario_id']);
            $template = 'template_cliente';
            require 'app/views/inicio_clientes.php';
        } else {
            header('location:inicio');
        }
    }

    /**
     * Metodo para mostrar la vista de cliente
     */
    public function ver_cliente() {
        if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('comercial') || $_SESSION['weokey_publicidad_tipo_usuario'] == md5('administrador')) {
            $obj_cliente = new Cliente();
            if (!$obj_cliente->get_by_id($_GET['id'])) {
                header('location:../listado_clientes');
            }
            $obj_anuncio = new Anuncio();
            $params_anuncios = $obj_anuncio->get_anuncios_by_cliente($_GET['id']);

            $template = 'template_comercial';
            if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('administrador')) {
                $obj_comercial = new Comercial();
                $obj_comercial->get_by_id($obj_cliente->comercial);
                $template = 'template_administrador';
            }
            require 'app/views/ver_cliente.php';
        } else {
            header('location:../inicio');
        }
    }

    /**
     * Metodo para mostrar la vista de cliente
     */
    public function perfil() {
        if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('cliente')) {
            $obj_cliente = new Cliente();
            $obj_cliente->get_by_id($_SESSION['weokey_publicidad_usuario_id']);

            require 'app/views/ver_cliente.php';
        } else {
            header('location:../inicio');
        }
    }

    /**
     * metodo para listar todos los clientes de un comercial
     */
    public function listado_clientes() {
        if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('comercial')) {
            $template = 'template_comercial';
            $obj_comercial = new Comercial();
            $params_clientes = $obj_comercial->get_clientes_by_comercial($_SESSION['weokey_publicidad_usuario_id']);
            require 'app/views/listado_clientes.php';
        } else if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('administrador')) {
            $template = 'template_administrador';
            $obj_clientes = new Cliente();
            $params_clientes = $obj_clientes->obtener_todos_clientes();
            require 'app/views/listado_clientes.php';
        } else {
            header('location:inicio');
        }
    }

    /**
     * metodo para listar todos los clientes inactivos de un comercial
     */
    public function listado_clientes_inactivos() {
        if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('comercial')) {
            $template = 'template_comercial';
            $obj_comercial = new Comercial();
            $params_clientes = $obj_comercial->get_clientes_by_comercial_inactivos($_SESSION['weokey_publicidad_usuario_id']);
            require 'app/views/listado_clientes_inactivos.php';
        } else if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('administrador')) {
            $template = 'template_administrador';
            $obj_clientes = new Cliente();
            $params_clientes = $obj_clientes->obtener_todos_clientes_inactivos();
            require 'app/views/listado_clientes_inactivos.php';
        } else {
            header('location:inicio');
        }
    }

    /**
     * Formulario de registro y regitrar al usuario en bd
     */
    public function registrar() {
        if ($_SESSION['weokey_publicidad_tipo_usuario'] != md5('comercial') && $_SESSION['weokey_publicidad_tipo_usuario'] != md5('administrador')) {
            header('location:inicio');
        } else {
            if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                $obj_cliente = new Cliente();

                //Limpiamos los campos y los guardamos en variables
                $usuario = test_input($_POST['usuario']);
                $nombre = test_input($_POST['nombre']);
                $apellidos = test_input($_POST['apellidos']);
                $documento_identidad = test_input($_POST['documento_identidad']);
                $direccion = test_input($_POST['direccion']);
                $localidad = test_input($_POST['localidad']);
                $provincia = test_input($_POST['provincia']);
                $pais = test_input($_POST['pais']);
                $telefono = test_input($_POST['telefono']);
                $email = test_input($_POST['email']);
                $cuenta_bancaria = test_input($_POST['cuenta_bancaria']);

                if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('comercial')) {
                    //Obtenemos el id del comercial que lo registra
                    $obj_comercial = new Comercial();
                    $obj_comercial->get_codificado($_SESSION['weokey_publicidad_usuario']);
                    $comercial_id = $_SESSION['weokey_publicidad_usuario_id'];
                } else if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('administrador')) {
                    $comercial_id = test_input($_POST['comercial']);
                }

                //Comprobamos que se han introducido todos los datos obligatorios
                $obj_administrador = new Administrador();
                $obj_comercial = new Comercial();

                if ($obj_comercial->existe_comercial_email($email) || $obj_administrador->existe_administrador_email($email) || $obj_cliente->existe_cliente_email($email)) {
                    $_SESSION['publicidad_msj'] = "Ya existe un usuario con ese email";
                    header('location:registro_cliente');
                } else if ($obj_comercial->existe_nombre_usuario($usuario) || $obj_administrador->existe_nombre_usuario($usuario) || $obj_cliente->existe_nombre_usuario($usuario)) {
                    $_SESSION['publicidad_msj'] = "Ya existe un usuario con ese nombre";
                    header('location:registro_cliente');
                } else {
                    //Genera una contraseña aleatoria a partir del datetime de hoy
                    $password_gen = substr(md5(time()), 0, 8);
                    $password = md5($password_gen);
                    
                    $array_datos = array(
                        "usuario" => $usuario,
                        "nombre" => $nombre,
                        "apellidos" => $apellidos,
                        "documento_identidad" => $documento_identidad,
                        "direccion" => $direccion,
                        "localidad" => $localidad,
                        "provincia" => $provincia,
                        "pais" => $pais,
                        "telefono" => $telefono,
                        "email" => $email,
                        "cuenta_bancaria" => $cuenta_bancaria,
                        "comercial" => $comercial_id,
                        "password" => $password
                    );

                    $obj_cliente->set($array_datos);
                    $id = $obj_cliente->get_last_id();
                    //envia mail con la contraseña
                    send_mail_registro($email, $password_gen, $usuario);
                    
                    $_SESSION['publicidad_msj'] = 'Cliente registrado correctamente.';
                    header("location:ver_cliente/$id");
                }
            } else {
                $template = 'template_comercial';
                if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('administrador')) {
                    $obj_comercial = new Comercial();
                    $params_comerciales = $obj_comercial->obtener_todos_comerciales();
                    $template = 'template_administrador';
                }
                require 'app/views/registro_cliente.php';
            }
        }
    }

    /**
     * Formulario para editar usuario
     */
    public function editar() {
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            $obj_cliente = new Cliente();

            //Limpiamos los campos y los guardamos en variables
            $usuario = test_input($_POST['usuario']);
            $nombre = test_input($_POST['nombre']);
            $apellidos = $_POST['apellidos'];
            $documento_identidad = $_POST['documento_identidad'];
            $direccion = test_input($_POST['direccion']);
            $localidad = test_input($_POST['localidad']);
            $provincia = test_input($_POST['provincia']);
            $pais = test_input($_POST['pais']);
            $telefono = test_input($_POST['telefono']);
            $email = test_input($_POST['email']);
            $cuenta_bancaria = test_input($_POST['cuenta_bancaria']);

            //print_r(isset($_POST['activo']));
            //die();

            if (isset($_POST['activo'])) {
                $activo = 1;
            } else {
                $activo = 0;
            }

            if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('comercial')) {
                //Obtenemos el id del comercial que lo registra
                $comercial_id = $_SESSION['weokey_publicidad_usuario_id'];
            } else if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('administrador')) {
                $comercial_id = test_input($_POST['comercial']);
            }

            $array_datos = array(
                "usuario" => $usuario,
                "nombre" => $nombre,
                "apellidos" => $apellidos,
                "documento_identidad" => $documento_identidad,
                "direccion" => $direccion,
                "localidad" => $localidad,
                "provincia" => $provincia,
                "pais" => $pais,
                "telefono" => $telefono,
                "email" => $email,
                "cuenta_bancaria" => $cuenta_bancaria,
                "activo" => $activo,
                "comercial" => $comercial_id
            );

            $obj_cliente->edit($array_datos);
            $id = $_GET['id'];
            $_SESSION['publicidad_msj'] = 'Cliente modificado correctamente.';
            header("location: ../ver_cliente/$id");
        } else {
            if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('comercial') || $_SESSION['weokey_publicidad_tipo_usuario'] == md5('administrador')) {
                $obj_cliente = new Cliente();
                if (!$obj_cliente->get_by_id($_GET['id'])) {
                    header('location:../listado_clientes');
                } else {
                    $template = 'template_comercial';
                    if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('administrador')) {
                        $obj_comercial = new Comercial();
                        $params_comerciales = $obj_comercial->obtener_todos_comerciales();
                        $template = 'template_administrador';
                    }
                    require 'app/views/modificar_cliente.php';
                }
            } else {
                header('location:../inicio');
            }
        }
    }

    /**
     * Metodo para desactivar un cliente
     */
    public function desactivar() {
        if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('comercial') || $_SESSION['weokey_publicidad_tipo_usuario'] == md5('administrador')) {
            $obj_cliente = new Cliente();
            if (!$obj_cliente->desactivar_cliente($_GET['id'])) {
                header("location:../listado_clientes");
            }
            $_SESSION['publicidad_msj'] = 'Cliente desactivado correctamente.';
            header("location:../listado_clientes");
        } else {
            header('location:inicio');
        }
    }

    /**
     * Metodo para activar un cliente
     */
    public function activar() {
        if ($_SESSION['weokey_publicidad_tipo_usuario'] == md5('comercial') || $_SESSION['weokey_publicidad_tipo_usuario'] == md5('administrador')) {
            $obj_cliente = new Cliente();
            if (!$obj_cliente->activar_cliente($_GET['id'])) {
                header("location:../clientes_inactivos");
            }
            $_SESSION['publicidad_msj'] = 'Cliente activado correctamente.';
            header("location:../clientes_inactivos");
        } else {
            header('location:inicio');
        }
    }

    /**
     * Función que comprueba si existe un usuario con el email que recibo por post desde ajax
     * @return devuelve con echo si existe o no el un usuario
     */
    public function comprobacion_email_existente() {
        $obj_usuario = new Usuario();

        if ($obj_usuario->existe_usuario_email($_POST['email'])) {
            echo 'existe';
        } else {
            echo 'no existe';
        }
    }

    /**
     * Función que comprueba si existe un usuario con el nombre de usuario que recibo por post desde ajax
     * @return devuelve con echo si existe o no el un usuario
     */
    public function comprobacion_nombre_usuario_existente() {
        $obj_usuario = new Usuario();

        if ($obj_usuario->existe_nombre_usuario($_POST['usuario'])) {
            echo 'existe';
        } else {
            echo 'no existe';
        }
    }

    /**
     * Cambiar clave del cliente
     */
    public function cambiar_clave() {
        $password = $_POST['password'];
        $confirm_password = $_POST['confirm_password'];

        if ($password == $confirm_password) {
            $obj_cliente = new Cliente();
            $obj_cliente->cambiar_clave($_SESSION['weokey_publicidad_usuario_id'], $password);
            $_SESSION['publicidad_msj'] = 'Contraseña cambiada correctamente.';
            header('location:perfil');
        } else {
            //si la contraseña no es igual
            $_SESSION['publicidad_msj'] = 'La contraseña no coincide.';
            header('location:perfil');
        }
    }

    /**
     * Formulario de logout
     */
    public function logout() {
        session_destroy(); //Borra todas las variables de sesión
        setcookie("sesionusuario", "", time() + 24 * 60 * 60 * 7); //Borra la cookie de usuario
        header('location:inicio');
    }

}

?>
